// 引入 Tiptap 的 Extension 类，用于创建自定义扩展。
import { Extension } from "@tiptap/core";

// 引入 InlineMathNode（内联数学公式节点）模块和相关配置。
import { InlineMathNode } from "./inline-math-node";

// 引入默认配置选项 DEFAULT_OPTIONS 和 MathExtensionOption 类型定义。
import { DEFAULT_OPTIONS, type MathExtensionOption } from "./util/options";

// 定义扩展名称常量，便于统一管理和引用。
export const MATH_EXTENSION_NAME = "mathExtension";

// 创建并导出 MathExtension 扩展。
export const MathExtension = Extension.create<MathExtensionOption>({
  // 设置扩展名称。
  name: MATH_EXTENSION_NAME,

  // 添加扩展的配置选项，默认使用 DEFAULT_OPTIONS。
  addOptions() {
    return DEFAULT_OPTIONS;
  },

  // 添加子扩展（extensions）。
  addExtensions() {
    // 初始化一个空数组来存放子扩展。
    const extensions = [];

    // 如果 addInlineMath 配置不为 false，则添加 InlineMathNode 扩展。
    if (this.options.addInlineMath !== false) {
      extensions.push(InlineMathNode.configure(this.options));
    }

    // 返回包含的子扩展列表。
    return extensions;
  },
});

// 导出 InlineMathNode 和 DEFAULT_OPTIONS 供其他模块使用。
export { InlineMathNode, DEFAULT_OPTIONS };

// 导出 MathExtensionOption 类型定义。
export type { MathExtensionOption };

// 默认导出 MathExtension。
export default MathExtension;
